package com.adk.backend.service;

import com.adk.backend.entity.LxFinanceCheckDetails;
import java.util.List;
import java.util.Map;

/**
 * 成本管理服务接口
 */
public interface CostService {
    
    /**
     * 查询Cou成本列表（空运成本）
     */
    List<Map<String, Object>> getCouCostList(Map<String, Object> params);
    
    /**
     * 查询Cargo成本列表（空运货物成本）
     */
    List<Map<String, Object>> getCargoCostList(Map<String, Object> params);
    
    /**
     * 查询海运成本列表
     */
    List<Map<String, Object>> getSeaCostList(Map<String, Object> params);
    
    /**
     * 获取财务对账月份列表
     */
    List<Map<String, Object>> getFinanceCheckMonthList();
    
    /**
     * 根据提单ID查询财务对账明细
     */
    Map<String, Object> getFinanceCheckDetailsByBlId(Long blId);
    
    /**
     * 计算合计金额
     */
    Map<String, Object> calculateTotalAmount(List<Long> blIds);
    
    /**
     * 设置提单的财务对账月份
     */
    boolean setBlFinanceCheckMonth(Long blId, Long monthId, Long oldMonthId);
    
    /**
     * 更新财务对账汇总
     */
    boolean updateFinanceCheckTotal(Long monthId);
    
    /**
     * 保存或更新中港费用
     */
    boolean saveZgFee(LxFinanceCheckDetails details);
    
    /**
     * 保存或更新头程费用
     */
    boolean saveTxFee(LxFinanceCheckDetails details);
    
    /**
     * 保存或更新报关费用
     */
    boolean saveDeclareFee(LxFinanceCheckDetails details);
    
    /**
     * 保存或更新证书费用
     */
    boolean saveCertFee(LxFinanceCheckDetails details);
    
    /**
     * 保存或更新派送费用
     */
    boolean savePsFee(LxFinanceCheckDetails details);
    
    /**
     * 保存或更新汇率
     */
    boolean saveExchangeRate(Long blId, Long fcdId, java.math.BigDecimal newRate);
    
    /**
     * 保存或更新货拉拉费用
     */
    boolean saveHllFee(Long blId, Long fcdId, java.math.BigDecimal hllFee);
    
    /**
     * 保存或更新VAT费用
     */
    boolean saveVatFee(LxFinanceCheckDetails details);
    
    /**
     * 保存或更新GS费用
     */
    boolean saveGsFee(Long blId, Long fcdId, java.math.BigDecimal gsFee);
    
    /**
     * 保存或更新DD费用
     */
    boolean saveDdFee(Long blId, Long fcdId, java.math.BigDecimal ddFee);
    
    /**
     * 保存或更新QT费用
     */
    boolean saveQtFee(Long blId, Long fcdId, java.math.BigDecimal qtFee);
    
    /**
     * 保存或更新Cargo派送费用
     */
    boolean saveCargoPsFee(Long blId, Long fcdId, java.math.BigDecimal newPsFee);
    
    /**
     * 保存或更新收货人费用
     */
    boolean saveCneeFee(Long blId, Long fcdId, java.math.BigDecimal cnee);
    
    /**
     * 保存或更新Cargo报关费用
     */
    boolean saveCargoDeclareFee(LxFinanceCheckDetails details);
    
    /**
     * 更新财务对账月份汇率
     */
    boolean updateFinanceCheckExchangeRate(Long monthId, java.math.BigDecimal exchangeRate);
    
    /**
     * 获取QGH信息
     */
    Map<String, Object> getQghInfo(Long qghId);
    
    /**
     * 获取QGH列表
     */
    List<Map<String, Object>> getQghList();
    
    /**
     * 获取派送费用订单列表
     */
    List<Map<String, Object>> getPsFeeOrderList(String blNo);
}

